Skip to contentSkip to conversation

RCU changes for v4.5

GIT PULL Ingo Molnar 3 participants 8 messages Jan 11, 2016 – Jan 21, 2016

Subsystems (12)
lore
Share & tools
lore
#0 lore raw

Linus,

Please pull the latest core-rcu-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core-rcu-for-linus

# HEAD: 3104fb3dd45bb47ff1382d1c079c251710ddcae3 Merge branch 'for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu

The changes in this cycle were:

- Adding transitivity uniformly to rcu_node structure ->lock acquisitions. (This is implemented by the first two commits on top of v4.4-rc2 due to the pervasive nature of this change.)

- Documentation updates, including RCU requirements.

- Expedited grace-period changes.

- Miscellaneous fixes.

- Linked-list fixes, courtesy of KTSAN.

- Torture-test updates.

- Late-breaking fix to sysrq-generated crash.

One thing I should note is that these pieces of documentation are fairly large files:

 .../RCU/Design/Requirements/Requirements.html      | 2897 ++++++++++++++++++++
 .../RCU/Design/Requirements/Requirements.htmlx     | 2741 ++++++++++++++++++

and are written in HTML, not the usual .txt style. I hope they are fine.

Thanks,

Ingo

------------------>
Alexey Kardashevskiy (2):
rcu: Fix comment for rcu_dereference_raw_notrace
list: Add lockless list traversal primitives

Ani Sinha (1):
sysrq: Fix warning in sysrq generated crash.

Chris Metcalf (1):
Documentation/memory-barriers.txt: Fix ACCESS_ONCE thinko

Paul E. McKenney (40):
list: Use WRITE_ONCE() when adding to lists and hlists
list: Use READ_ONCE() when testing for empty lists
rcu: Add transitivity to remaining rcu_node ->lock acquisitions
rcu: Short-circuit synchronize_sched_expedited() if only one CPU
rcu: Clarify role of ->expmaskinitnext
rcu: Move smp_mb() from rcu_seq_snap() to rcu_exp_gp_seq_snap()
rcu: Invert sync_rcu_exp_select_cpus() "if" statement
rcu: Reduce expedited GP memory contention via per-CPU variables
rcu: Make expedited grace periods resolve stall-warning ties
rcu: Add more diagnostics to expedited stall warning messages.
rcu: Add rcu_normal kernel parameter to suppress expediting
rcu: Wire up rcu_end_inkernel_boot()
rcu: Allow expedited grace periods to be disabled at init
rcu: Move lock_class_key to local scope
rcu: Simplify rcu_sched_qs() control flow
rcu: Remove lock-acquisition loop from rcu_read_unlock_special()
rcu: Fix obsolete rcu_bootup_announce_oddness() comment
rcu: Avoid tick_nohz_active checks on NOCBs CPUs
rcu: Stop disabling interrupts in scheduler fastpaths
list: Use WRITE_ONCE() when initializing list_head structures
documentation: Record RCU requirements
Documentation: Record bottom-bit-zero guarantee for ->next
documentation: Cover requirements controlling stall warnings
documentation: Composability analogies
documentation: Expand on scheduler/RCU deadlock requirements
documentation: Clarify RCU memory barriers and requirements
documentation: Update RCU requirements based on expedited changes
rcutorture: Add batch number to script printout
rcutorture: Flag nonexistent RCU GP kthread
rcutorture: Dump stack when GP kthread stalls
rcutorture: Default grace period to three minutes, allow override
rcutorture: Print symbolic name for rcu_torture_writer_state
rcutorture: Print symbolic name for ->gp_state
torture: Abbreviate console error dump
torture: Place console.log files correctly from the get-go
rcu: Remove TINY_RCU bloat from pointless boot parameters
rcu: Eliminate unused rcu_init_one() argument
rcu: Make cpu_needs_another_gp() be bool
rcu: Don't redundantly disable irqs in rcu_irq_{enter,exit}()
rcu: Make rcu_gp_init() be bool rather than int

Paul Gortmaker (1):
kernel: Make rcu/tree_trace.c explicitly non-modular

Peter Zijlstra (2):

      rcu: Create transitive rnp->lock acquisition functions
      rcu: Move wakeup out from under rnp->lock

Petko Manolov (1):
list: Introduces generic list_splice_tail_init_rcu()

Yang Shi (1):
rcutorture: Remove CONFIG_RCU_USER_QS from rcutorture selftest doc

 .../RCU/Design/Requirements/2013-08-is-it-dead.png |  Bin 0 -> 100825 bytes
 .../Design/Requirements/GPpartitionReaders1.svg    |  374 +++
 .../RCU/Design/Requirements/RCUApplicability.svg   |  237 ++
 .../Design/Requirements/ReadersPartitionGP1.svg    |  639 +++++
 .../RCU/Design/Requirements/Requirements.html      | 2897 ++++++++++++++++++++
 .../RCU/Design/Requirements/Requirements.htmlx     | 2741 ++++++++++++++++++
 Documentation/RCU/Design/htmlqqz.sh                |  108 +
 Documentation/kernel-parameters.txt                |   29 +-
 Documentation/memory-barriers.txt                  |    8 +-
 drivers/tty/sysrq.c                                |    6 +
 include/linux/list.h                               |   14 +-
 include/linux/list_bl.h                            |    2 +-
 include/linux/list_nulls.h                         |    2 +-
 include/linux/rculist.h                            |  105 +-
 include/linux/rcupdate.h                           |   21 +-
 include/linux/rcutiny.h                            |    8 +
 include/linux/rcutree.h                            |    4 +-
 include/linux/tracepoint.h                         |    4 +-
 init/main.c                                        |    2 +
 kernel/ksysfs.c                                    |   26 +-
 kernel/rcu/rcutorture.c                            |   24 +-
 kernel/rcu/srcu.c                                  |    2 +-
 kernel/rcu/tree.c                                  |  313 ++-
 kernel/rcu/tree.h                                  |   61 +-
 kernel/rcu/tree_plugin.h                           |   66 +-
 kernel/rcu/tree_trace.c                            |   39 +-
 kernel/rcu/update.c                                |   22 +-
 kernel/sched/core.c                                |    6 +-
 lib/list_debug.c                                   |    2 +-
 .../selftests/rcutorture/bin/kvm-test-1-run.sh     |    9 +-
 tools/testing/selftests/rcutorture/bin/kvm.sh      |   22 +-
 .../selftests/rcutorture/bin/parse-console.sh      |   41 +-
 .../testing/selftests/rcutorture/doc/TINY_RCU.txt  |    1 -
 .../selftests/rcutorture/doc/TREE_RCU-kconfig.txt  |    4 -
 34 files changed, 7552 insertions(+), 287 deletions(-)
 create mode 100644 Documentation/RCU/Design/Requirements/2013-08-is-it-dead.png
 create mode 100644 Documentation/RCU/Design/Requirements/GPpartitionReaders1.svg
 create mode 100644 Documentation/RCU/Design/Requirements/RCUApplicability.svg
 create mode 100644 Documentation/RCU/Design/Requirements/ReadersPartitionGP1.svg
 create mode 100644 Documentation/RCU/Design/Requirements/Requirements.html
 create mode 100644 Documentation/RCU/Design/Requirements/Requirements.htmlx
 create mode 100755 Documentation/RCU/Design/htmlqqz.sh
Documentation/RCU/Design/Requirements/2013-08-is-it-dead.png new file binary +0 -0
new file mode 100644
index 000000000000..7496a55e4e7b
Binary files /dev/null and b/Documentation/RCU/Design/Requirements/2013-08-is-it-dead.png differ
Documentation/RCU/Design/Requirements/GPpartitionReaders1.svg new file +374 -0

374 lines not on this page · raw message

Documentation/RCU/Design/Requirements/RCUApplicability.svg new file +237 -0

237 lines not on this page · raw message

Documentation/RCU/Design/Requirements/ReadersPartitionGP1.svg new file +639 -0

639 lines not on this page · raw message

Documentation/RCU/Design/Requirements/Requirements.html new file +2897 -0

1,750 lines not on this page · raw message

Documentation/RCU/Design/Requirements/Requirements.htmlx new file +2741 -0

2,741 lines not on this page · raw message

Documentation/RCU/Design/htmlqqz.sh new file +108 -0

108 lines not on this page · raw message

Documentation/kernel-parameters.txt +23 -6
index 742f69d18fc8..d8186da15ca1 100644

Lines of this file are not shown. View the raw message.

Documentation/memory-barriers.txt +4 -4
index aef9487303d0..85304ebd187c 100644

Lines of this file are not shown. View the raw message.

drivers/tty/sysrq.c +6 -0
index 5381a728d23e..e5139402e7f8 100644

Lines of this file are not shown. View the raw message.

include/linux/list.h +7 -7
index 993395a2e55c..5356f4d661a7 100644

Lines of this file are not shown. View the raw message.

include/linux/list_bl.h +1 -1
index 8132214e8efd..ee7229a6c06a 100644

Lines of this file are not shown. View the raw message.

include/linux/list_nulls.h +1 -1
index 444d2b1313bd..b01fe1009084 100644

Lines of this file are not shown. View the raw message.

include/linux/rculist.h +85 -20

105 lines not on this page · raw message

include/linux/rcupdate.h +17 -4
index a0189ba67fde..14e6f47ee16f 100644

Lines of this file are not shown. View the raw message.

include/linux/rcutiny.h +8 -0
index 4c1aaf9cce7b..64809aea661c 100644

Lines of this file are not shown. View the raw message.

include/linux/rcutree.h +3 -1
index 60d15a080d7c..ad1eda9fa4da 100644

Lines of this file are not shown. View the raw message.

include/linux/tracepoint.h +2 -2
index 696a339c592c..7834a8a8bf1e 100644

Lines of this file are not shown. View the raw message.

init/main.c +2 -0
index 9e64d7097f1a..c6ebefafa496 100644

Lines of this file are not shown. View the raw message.

kernel/ksysfs.c +24 -2
index e83b26464061..152da4a48867 100644

Lines of this file are not shown. View the raw message.

kernel/rcu/rcutorture.c +23 -1
index d89328e260df..d2988d047d66 100644

Lines of this file are not shown. View the raw message.

kernel/rcu/srcu.c +1 -1
index a63a1ea5a41b..9b9cdd549caa 100644

Lines of this file are not shown. View the raw message.

kernel/rcu/tree.c +170 -143

313 lines not on this page · raw message

kernel/rcu/tree.h +57 -4

61 lines not on this page · raw message

kernel/rcu/tree_plugin.h +27 -39

66 lines not on this page · raw message

kernel/rcu/tree_trace.c +16 -23
index ef7093cc9b5c..1088e64f01ad 100644

Lines of this file are not shown. View the raw message.

kernel/rcu/update.c +20 -2
index 5f748c5a40f0..76b94e19430b 100644

Lines of this file are not shown. View the raw message.

kernel/sched/core.c +4 -2
index 732e993b564b..1ef0d7aeab47 100644

Lines of this file are not shown. View the raw message.

lib/list_debug.c +1 -1
index c24c2f7e296f..3859bf63561c 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh +3 -6
index 5236e073919d..0f80eefb0bfd 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/rcutorture/bin/kvm.sh +16 -6
index f6483609ebc2..4a431767f77a 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/rcutorture/bin/parse-console.sh +35 -6

41 lines not on this page · raw message

tools/testing/selftests/rcutorture/doc/TINY_RCU.txt +0 -1
index 9ef33a743b73..24396ae8355b 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt +0 -4
index 657f3a035488..4e2b1893d40d 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.

#1 lore raw
Quoted 26 lines · Ingo Molnar

Linus,

Please pull the latest core-rcu-for-linus git tree from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core-rcu-for-linus

   # HEAD: 3104fb3dd45bb47ff1382d1c079c251710ddcae3 Merge branch 'for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu

The changes in this cycle were:

- Adding transitivity uniformly to rcu_node structure ->lock acquisitions. (This is implemented by the first two commits on top of v4.4-rc2 due to the pervasive nature of this change.)

- Documentation updates, including RCU requirements.

- Expedited grace-period changes.

- Miscellaneous fixes.

- Linked-list fixes, courtesy of KTSAN.

- Torture-test updates.

- Late-breaking fix to sysrq-generated crash.

Quoted 7 lines

One thing I should note is that these pieces of documentation are fairly large files:

 .../RCU/Design/Requirements/Requirements.html      | 2897 ++++++++++++++++++++
 .../RCU/Design/Requirements/Requirements.htmlx     | 2741 ++++++++++++++++++

and are written in HTML, not the usual .txt style. I hope they are fine.

For whatever it is worth, the reason for this unconventional choice was that attempts to do the diagrams in ASCII art failed miserably. And attempts to do ASCII art for the upcoming documentation of the data structures failed even more miserably.

Thanx, Paul

#2 lore raw
In reply to Ingo Molnar
Quoted 9 lines · Ingo Molnar

Please pull the latest core-rcu-for-linus git tree from:

One thing I should note is that these pieces of documentation are fairly large files:

 .../RCU/Design/Requirements/Requirements.html      | 2897 ++++++++++++++++++++
 .../RCU/Design/Requirements/Requirements.htmlx     | 2741 ++++++++++++++++++

and are written in HTML, not the usual .txt style. I hope they are fine.

Not to mention the PNG image:

Quoted 1 line
 .../RCU/Design/Requirements/2013-08-is-it-dead.png |  Bin 0 -> 100825 bytes

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#3 lore raw
Quoted 6 lines · Geert Uytterhoeven
Quoted 5 lines · Ingo Molnar

Please pull the latest core-rcu-for-linus git tree from:

One thing I should note is that these pieces of documentation are fairly large files:

Quoted 8 lines
Quoted 4 lines
 .../RCU/Design/Requirements/Requirements.html      | 2897 ++++++++++++++++++++
 .../RCU/Design/Requirements/Requirements.htmlx     | 2741 ++++++++++++++++++

and are written in HTML, not the usual .txt style. I hope they are fine.

Not to mention the PNG image:

Quoted 1 line
 .../RCU/Design/Requirements/2013-08-is-it-dead.png |  Bin 0 -> 100825 bytes

Most diagrams will be .svg. But if the .png is too objectionable, it would not be too big a deal to remove it.

Thoughts?

Thanx, Paul

Quoted 11 lines

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#4 lore raw
Quoted 12 lines · Paul E. McKenney
Quoted 11 lines · Geert Uytterhoeven
Quoted 9 lines · Ingo Molnar

Please pull the latest core-rcu-for-linus git tree from:

One thing I should note is that these pieces of documentation are fairly large files:

 .../RCU/Design/Requirements/Requirements.html      | 2897 ++++++++++++++++++++
 .../RCU/Design/Requirements/Requirements.htmlx     | 2741 ++++++++++++++++++

and are written in HTML, not the usual .txt style. I hope they are fine.

Quoted 8 lines
Quoted 3 lines

Not to mention the PNG image:

Quoted 1 line
 .../RCU/Design/Requirements/2013-08-is-it-dead.png |  Bin 0 -> 100825 bytes

Most diagrams will be .svg. But if the .png is too objectionable, it would not be too big a deal to remove it.

Thoughts?

Too late, it's in git history...

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#5 lore raw
Quoted 16 lines · Geert Uytterhoeven
Quoted 14 lines · Paul E. McKenney
Quoted 13 lines · Geert Uytterhoeven
Quoted 9 lines · Ingo Molnar

Please pull the latest core-rcu-for-linus git tree from:

One thing I should note is that these pieces of documentation are fairly large files:

 .../RCU/Design/Requirements/Requirements.html      | 2897 ++++++++++++++++++++
 .../RCU/Design/Requirements/Requirements.htmlx     | 2741 ++++++++++++++++++

and are written in HTML, not the usual .txt style. I hope they are fine.

Not to mention the PNG image:

Quoted 8 lines
Quoted 6 lines
Quoted 1 line
Quoted 1 line
 .../RCU/Design/Requirements/2013-08-is-it-dead.png |  Bin 0 -> 100825 bytes

Most diagrams will be .svg. But if the .png is too objectionable, it would not be too big a deal to remove it.

Thoughts?

Too late, it's in git history...

There is always "git rm". Or is your concern instead the size of the .git/objects directory?

Thanx, Paul

#6 lore raw
Quoted 22 lines · Paul E. McKenney
Quoted 21 lines · Geert Uytterhoeven
Quoted 19 lines · Paul E. McKenney
Quoted 6 lines · Geert Uytterhoeven
Quoted 5 lines · Ingo Molnar

Please pull the latest core-rcu-for-linus git tree from:

One thing I should note is that these pieces of documentation are fairly large files:

Quoted 8 lines
Quoted 4 lines
 .../RCU/Design/Requirements/Requirements.html      | 2897 ++++++++++++++++++++
 .../RCU/Design/Requirements/Requirements.htmlx     | 2741 ++++++++++++++++++

and are written in HTML, not the usual .txt style. I hope they are fine.

Not to mention the PNG image:

Quoted 1 line
 .../RCU/Design/Requirements/2013-08-is-it-dead.png |  Bin 0 -> 100825 bytes

Most diagrams will be .svg. But if the .png is too objectionable, it would not be too big a deal to remove it.

Quoted 6 lines
Quoted 3 lines
Quoted 1 line

Thoughts?

Too late, it's in git history...

There is always "git rm". Or is your concern instead the size of the .git/objects directory?

My only remark is that if we don't want PNGs, they shouldn't enter git history, as "git rm" doesn't really remove them. So we can't get rid of the existing ones, but we can still think about if we want (no) more of them...

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#7 lore raw
Quoted 26 lines · Geert Uytterhoeven
Quoted 24 lines · Paul E. McKenney
Quoted 23 lines · Geert Uytterhoeven
Quoted 20 lines · Paul E. McKenney
Quoted 6 lines · Geert Uytterhoeven
Quoted 5 lines · Ingo Molnar

Please pull the latest core-rcu-for-linus git tree from:

One thing I should note is that these pieces of documentation are fairly large files:

Quoted 8 lines
Quoted 4 lines
 .../RCU/Design/Requirements/Requirements.html      | 2897 ++++++++++++++++++++
 .../RCU/Design/Requirements/Requirements.htmlx     | 2741 ++++++++++++++++++

and are written in HTML, not the usual .txt style. I hope they are fine.

Not to mention the PNG image:

Quoted 1 line
 .../RCU/Design/Requirements/2013-08-is-it-dead.png |  Bin 0 -> 100825 bytes

Most diagrams will be .svg. But if the .png is too objectionable, it would not be too big a deal to remove it.

Thoughts?

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

Too late, it's in git history...

There is always "git rm". Or is your concern instead the size of the .git/objects directory?

My only remark is that if we don't want PNGs, they shouldn't enter git history, as "git rm" doesn't really remove them. So we can't get rid of the existing ones, but we can still think about if we want (no) more of them...

Fair enough! For whatever it is worth, we do have a number of .pbm, .ppm, and .pdf files.

Thanx, Paul